上面那几个函数在路径里找到一个可执行文件,这个文件不是连接编译器产生的可执行文件,就认为这是一个shell脚本 调用/bin/sh执行 apue:200
这里也就明确说明了,想执行shell脚本还需要给shell脚本增加执行权限 chmod +x filename
1 #include<stdio.h>
2 #include<unistd.h>
3 #include<errno.h>
4 #include<sys/types.h>
5 #include<string.h>
6 void sys_err(char *s)
7 {
8 fprintf(stderr , "%s : %s\n" , s , strerror(errno));
9 }
10 int main(void)
11 {
12 pid_t pid;
13
14 if((pid = fork())< 0)
15 sys_err("fork error:");
16 else if(pid == 0){
17 if(execl("/root/apue/p208/test" , "test" , "myarg1" ,"MY ARG2" , (char*)0) < 0)
18 sys_err("execl error:");
19 }
20 if(waitpid(pid , NULL ,0 ) < 0 )
21 sys_err("waitpid error:");
22 exit(0);
23 }