我正在尝试在C程序中执行此execl命令,但它根本无法工作。
execl("~/Desktop/taskc/validating/analyzer/numbers_analyzer", "numbers_analyzer", (char*)NULL);
bash: syntax error near unexpected token `"~/Desktop/taskc/validating/analyzer/numbers_analyzer",
我还尝试了一些我在互联网上找到的验证示例,但他们也没有工作。 (我总是得到同样的错误)
execl( "/bin/ls", "/bin/ls", argv[1], NULL );
bash: syntax error near unexpected token `"/bin/ls",'
execl("/bin/date", "date", 0, 0);
bash: syntax error near unexpected token `"/bin/date",'
谢谢和问候。
答案 0 :(得分:5)
如果您尝试直接向shell输入C函数调用,则会出现错误消息:
[dbush] execl("/bin/date", "date", 0, 0);
-bash: syntax error near unexpected token `"/bin/date",'
[dbush]
您需要将代码放入实际的C程序,编译并运行它:
#include <stdio.h>
#include <unistd.h>
int main()
{
// the last argument should be a NULL pointer to signal the end of the arg list
execl("/bin/date", "date", NULL);
}
输出:
[dbush] gcc -g -o /tmp/x1 /tmp/x1.c
[dbush] /tmp/x1
Tue Nov 24 20:11:54 UTC 2015
答案 1 :(得分:0)
在我的计算机上运行ubuntu linux 14.04,使用bash
作为命令shell,无法从命令行运行此命令。
但是,在以下C程序中,它可以正常工作:
#define _POSIX_C_SOURCE 200112L
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( void )
{
pid_t pid = fork();
if( 0> pid)
{ // then, error
perror("fork failed");
exit( EXIT_FAILURE );
}
if( !pid )
{ // child
execl( "/bin/ls", "/bin/ls", NULL, NULL );
perror( "execl failed" );
exit( EXIT_FAILURE );
}
printf( "parent running after successful fork\n");
return 0;
}
给出如下所示的输出:
注意:我从终端
运行程序在以下输出中,我从'ls'命令修剪了大部分文件。
parent running after successful fork
a.out howToCalcPrimeNumbers(works) tellwait.c
bashloop.sh howToCalcPrimeNumbers(works).c tellwait.h
cards.h howToCalcPrimeNumbers(works).o tellwait.h.gch
cards.h.gch input.txt tellwait.o
cent_convert.c libSensors.h test