如何在execl()函数中使程序后台执行?
比如我想执行pppd /dev/ttyS1 &
让pppd后台执行,省得打印那些乱码
在程序中采用execl()函数调用pppd
execl("/bin/pppd","pppd","/dev/ttyS1","&",(char *)0);
运行的时候提示&不是合法的选项
我想请问如果想让pppd后台执行,如果采用程序中调用execl()函数的方法如何实现?(关键是那个&怎么加?) 你搜索一下fork2 哎。。。。
fork和exec连用就可以了 & 是给shell 看的。
那样用是作为一个parameter传递给那个叫pppd的程序的。
你可以理解为在shell里打:
pppd "/dev/ttyS1" "&"
另外,如果你想主程序还继续运行,就必须要fork()出一个
进程的。因为exec会把调用它的那个进程的所有的数据,包括
address space, pc counter, stack等等都消掉换成exec调用的
那个程序的。然后就被完全替换掉了。
fork()刚好相反,它会把调用他的那个进程的所有信息都clone
出来,然后完全独立的在内存里占有自己的address space。
所以你就
if ( ! fork() ) {
//child
//call exec
exec(xxxxxxx);
printf( "no way to reach here" );
}
//parent
//do something 换句话说,
system函数会调用shell,而exec不会。
页:
[1]