#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t pid;
printf("Now only one process \n");
printf("Calling fork ....\n");
pid=fork();
if(!pid)
printf("I'm the child \n");
else if(pid>0)
printf("I'm the parent,child has pid %d\n",pid);
else
printf("Fork fail !");
return 0;
}
#include<stdio.h>
#include<unistd.h>
main()
{
printf("Executing ls\n");
execl("/bin/ls","ls","-l",NULL);
/*如果execl返回,说明调用失败*/
perror("execl failed to run ls");
exit(1);
}
#include<stdio.h>
#include<unistd.h>
main()
{
char* av[]={"ls","-l",NULL};
execv("/bin/ls",av);
perror("execv failed");
exit(1);
}
/showarg.c
#include <stdio.h>
int main(int argc,char* argv[])
{
while(--argc>0)
{
printf("%s ",*(++argv));
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<unistd.h>
main()
{
char* argin[]={"showarg","hello","world",NULL};
execvp(argin[0],argin);
perror("execvp failed");
exit(1);
}
注意:
1.export PATH=$PATH:. .把当前目录加入到环境变量中 .,如果不把当前目录加到环境变量,执行可执行文件时需要加 "./"
2.gcc showarg.c -o showarg 用gcc 把showarg.c源代码生成showarg可执行文件
3. execvp(argin[0],argin); 当前目录中执行程序。
#include<stdio.h>
#include<unistd.h>
main()
{
int pid;
/**/
pid=fork();
switch(pid){
case -1:
perror("fork failed");
exit(1);
case 0:
execl("/bin/ls","ls","-l","-color",NULL);
perror("execl failed");
exit(1);
default:
wait(NULL);
printf("ls completed \n");
exit(0);
}
}