标签: execl

C - 输出中的垃圾字符

比方说,我有两个程序--input.c&output.c我想做的就是使用execl()函数将一些"半金字塔"格式的有效载荷/字符发送到另一个.

Input.c中

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

#define SIZE 1024

int length;

int main(int argc, char *argv[])
{
    pid_t pid;
    char *target;
    //char payload[length+1];
    char payload[SIZE + 1];
    int status;
    int i = 0;

    if(argc < 2)
    {
        printf("Usage %s <length> <target>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    length = atoi(argv[1]);
    target = argv[2];

    while(i < length)
    {
        pid = fork();

        if(pid != 0)
        {
            waitpid(-1, &status, 0);
            //exit(0);
        }

        if(pid == 0)
        {
            payload[i] = 'A';
            payload[i …
Run Code Online (Sandbox Code Playgroud)

c fork character execl

6
推荐指数
1
解决办法
225
查看次数

为什么execl要求我在运行进程后点击"Enter"?

在bash中,当我输入ls并按下回车键时,二进制文件ls将运行,我将再次返回shell提示符而不从我这边做任何事情.

但是这个用C编写的程序会阻止:

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    pid_t other = fork();
    // other will be 0 for the child process
    // other will be the childs process' value in the parent process.

    switch(other) {
        case 0:
            printf("%s %i\n", "I am the child process!", other);
            execl("/bin/ls","ls",NULL);         
            return 0;
        default:
            printf("%s %i\n", "I am the parent process!", other);
            return 1;
    }

}
Run Code Online (Sandbox Code Playgroud)

为什么?

输出如下:

Korays-MacBook-Pro:~ koraytugay$ ./a.out 
I am the parent process! 40309
I …
Run Code Online (Sandbox Code Playgroud)

c linux bash execl

4
推荐指数
1
解决办法
72
查看次数

如何在C中将数字更改为变量?

我想知道如何在C中替换变量的值.

execl ("/bin/cat","cat","/proc/30828/status", (char *)0 );
Run Code Online (Sandbox Code Playgroud)

我希望能够将"30828"更改为变量,因为此值不固定.我想知道是否可以在SHELL中做一些你能做到的事情.例如在shell中你可以这样做:

K=`ls -lis $i`
echo $K
Run Code Online (Sandbox Code Playgroud)

c variables execl

3
推荐指数
1
解决办法
74
查看次数

Execlp 与 Execl

有什么场合更适合使用execl而不是execlp?我认为当一个程序位于两个不同的文件夹中时,使用execlp可能会导致混乱,但我不知道这是否是唯一的情况。我问这个问题是因为人们可能会认为写作execlp("ls", ...)比写作更容易execl("/bin/ls", ...)

c execl

3
推荐指数
1
解决办法
8673
查看次数

为什么在 argc 和 argv 中传递参数的程序以不同方式执行时会得到不同的结果

void main(int argc,char *argv[])
{
     for (int i = 0; i < argc; i++)
     {
         printf("%s ", argv[i]);
     }
}
Run Code Online (Sandbox Code Playgroud)

./test 1 2 3当我在终端中使用命令来执行这个程序时,我得到了结果./test 1 2 3,但是当我execl("/usr/src/test", "1", "2", "3", NULL)在另一个程序中使用函数时,我得到了结果 1 2 3,为什么?

c linux argv argc execl

2
推荐指数
1
解决办法
57
查看次数

execl&printf - 订单

我有一个小问题:

{
  printf ("abc");
  execl("./prog","prog",NULL);
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但为什么execl之前只运行printf?有人能帮助我吗?

c execl

1
推荐指数
1
解决办法
318
查看次数

C使用execl启动进程的pid

我正在用指令启动一个进程

execl("./softCopia","softCopia",NULL);
Run Code Online (Sandbox Code Playgroud)

softCopia只是一个在文件中写入整数的虚拟对象.

我想知道如何获得这个过程的pid?

c pid execl

1
推荐指数
1
解决办法
1844
查看次数

为什么这个程序打印一个空行?

这个程序叫做program.c. 当我运行时./program echo test,我希望程序打印test,即使命令是在子shell中运行的。为什么输出是空行?它与文件路径有关吗?当我尝试时,./program /bin/echo test我仍然得到一个空行输出。

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int function(char **argv) {
    execl("/bin/bash", "sh", "-c", *argv, argv, (char*)NULL);
}

int main(int argc, char **argv) {
    int return2;
    
    function(argv + 1);
}
Run Code Online (Sandbox Code Playgroud)

c echo execl

1
推荐指数
1
解决办法
68
查看次数

在execl()函数ic C语言中使用rm linux命令

希望一切顺利...我正在尝试编写在 C 语言的 execl 中使用 execl 的代码,但是当我放置文件目录时它不起作用。代码是:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
 int main(int argc,char* argv[]){
  int n,m,x;
  n=fork();
  if(n==0){
     execl("/bin/rm","rm /home/mazenas/Desktop/folder/","f.txt",NULL);
          }
  else{
     wait(&m);
     printf("end of Programm\n");
      }
  return 0;
  }
Run Code Online (Sandbox Code Playgroud)

帮帮我吧!

c linux rm execl

0
推荐指数
1
解决办法
35
查看次数

不能在C中使用execl

我试图在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",
Run Code Online (Sandbox Code Playgroud)

我还尝试了一些我在互联网上找到的验证示例,但它们也不起作用.(我总是得到同样的错误)

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",'
Run Code Online (Sandbox Code Playgroud)

感谢致敬.

c execl

-4
推荐指数
1
解决办法
592
查看次数

标签 统计

c ×10

execl ×10

linux ×3

argc ×1

argv ×1

bash ×1

character ×1

echo ×1

fork ×1

pid ×1

rm ×1

variables ×1