不能在 C 中使用 execl
Can't use execl in C
我试图在 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",
我还尝试了一些我在 Internet 上找到的验证示例,但它们也不起作用。 (我总是遇到同样的错误)
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",'
感谢和问候。
您收到的错误消息是如果您尝试将 C 函数调用直接输入 shell:
[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
在我的电脑上,运行ning 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
我试图在 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",
我还尝试了一些我在 Internet 上找到的验证示例,但它们也不起作用。 (我总是遇到同样的错误)
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",'
感谢和问候。
您收到的错误消息是如果您尝试将 C 函数调用直接输入 shell:
[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
在我的电脑上,运行ning 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