这样写有什么错?
/*execl.c*/
#include "exec.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int ps()
{
if(fork()==0)
{
/*调用execl函数,注意这里要给出ps程序所在的完整路径*/
if(execl("ps","ps","-aux",NULL)<0)
perror("execl error!");
}
}
int ls()
{
if(fork()==0)
{
/*调用execl函数,注意这里要给出ps程序所在的完整路径*/
if(execl("ls","ls","-l",NULL)<0)
perror("execl error!");
}
}
那照你这么说,在unix的环境中,只定义了/bin/sh,难道系统运行的时候,就只能执行shell,C程序就不能执行了吗?如果你用shell调用了一个ls的命令,但是ls是个可执行程序,难道这个shell就不能执行了?execl("/bin/sh", "sh", "-c", cmdstring, (char*)0)的确是调用了一个shell命令,但是没说shell命令就不能执行C程序了。比如你在命令行下敲了一个C程序,为什么能执行呢?请深刻理解unix的程序调用。
一周热门 更多>