Turbo C 的系统调用实例程序1

/****************程序环境 信号处理 实例tmp0.c ********************/
#include "stdio.h"
#include "stdlib.h"
#include "signal.h"
void mysigint(int no) /* 自定义SIGINT信号处理 */
{
 printf("User's Interrupt %d-Signal calls./n",no);
 sleep(1);
 exit(1);
}
int main(int argc,char *argv[],char **env)
{
 int i=0;
 signal(SIGFPE,mysigint); /* 自定义函数注册 */
 signal(SIGINT,mysigint);
 system("command"); /* DOS shell 调用 */
 puts(" ^^^^ This is Child Process 0 ^^^^");
 while (environ[i]) /* 运行时环境变量 同于env*/
  printf("%s/n",environ[i++]);
 getch();
 return 0;
}

/************ 父/子进程 调用&环境测试 实例tmp1.c ******************/
#include "stdio.h"
#include "stdlib.h"
#include "signal.h"
#include "process.h"
void mysigfpe(int no)
{
 printf("Parent Process Receive User's %d:SigFpe./n",no);
 sleep(1);
 exit(1);
}
int main(void)
{
 char* argv[]={"","*a *b",0};
 char* envp[]={"treeid=child","myname=stoness0",0};
 int chk=-10;
 int i=0;
 signal(SIGFPE,mysigfpe);
 puts(" ^^^^ This is Parent Process 1 ^^^^");
 putenv("treeid=parent"); /* 设置父进程环境变量 */
 while (environ[i]) puts(environ[i++])
   ;
 chk=spawnl(P_WAIT,"Tmp6.exe",argv[0],argv[1],NULL); /* 调用子进程 相当于fork();*/
 printf("Spawn Tmp6 Return %d./n",chk); /* 返回值 */
 sleep(1);
 execve("tmp0.exe",argv,envp); /* 覆盖调用 */
 puts("!!Error!! Cannot execute!!/n");
 getch();
 return 0;
}
 /*************** 底层文件操作 实例tmp6.c ******************/
#include "stdio.h"
#include "stdlib.h"
#include "dos.h"
#include "dir.h"
#include "io.h"
#include
int mybrk(void)
{
 puts("User's ^break!");
 sleep(1);
 return 1;
}
int main(int argc, char* argv[])
{
 int i=0,chk=-10,handler=0;
 char tmp[100]="tmp2.txt";
 struct ffblk ff1;
 ctrlbrk(mybrk);
 puts(" >>>> Tmp6 Child Process <<<<");
 while (i!=-1)

    delay(100);

 /* ... */

 return 0;

}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值