这是我的代码。
pid_t fpid=fork();
if(fpid > 0){
wait(&fpid);
}
else{
do_command();
}
问题是,函数do_command()只执行一行,所以我为此更改了do_command():
else{
execlp("/bin/ls","ls","-al",NULL);
cout<<"\ntest<<endl;
}
此外,执行了ls命令但缺少cout命令..
我的代码出了什么问题?
请原谅我可怜的英语并帮助我。
这是我的do_command()函数声明:
void do_command(const char *command) {
//all commands with arguments
const char *kernel_address = "/bin/";
char *kernel_command;
strcpy(kernel_command, kernel_address);
strcat(kernel_command, command);
cout << "\nCommand is:" << kernel_command << "\n" << endl;
execlp(kernel_command, command, NULL);
}
此外,在子进程中调用函数时没有任何输出
答案 0 :(得分:0)
下一行不打印,因为exec系列命令仅在出错时返回。如果没有错误,它将替换您的程序,并执行在exec中执行的任何命令。因此cout无法正常工作
答案 1 :(得分:0)