标签: pipe

最接近于Haskell中的subprocess.communicate

我想从Haskell做一个popen()/ python的subprocess.communicate - 启动一个程序,给它stdin,并得到它的stdout/stderr.什么是最直接/最朴素的方式?

executable haskell subprocess pipe popen

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

把Java管道给Grep:为什么不工作?

我试图在Bash中运行这个可怕的简单命令

java -cp nasa-top-secret.jar gov.nasa.RocketToMoon | grep -v codehaus
Run Code Online (Sandbox Code Playgroud)

但grep不起作用(它不会过滤掉我的字符串).如何java使用grep?过滤输出?

java bash grep pipe

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

C命名管道(fifo).父进程陷入困境

我想创建一个简单的程序,该fork,并且子进入命名管道,父进程从命名管道读取和显示.问题是它进入了父进程,进行了第一次printf然后它变得奇怪,它没有做任何其他事情,没有进入第二个printf,它只是在控制台中输入的方式.

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
void main()
{
char t[100];
mkfifo("myfifo",777);
pid_t pid;
pid = fork();
if (pid==0)
{
    //execl("fifo2","fifo2",(char*)0);
    char r[100];
    printf("scrie2->");
    scanf("%s",r);

    int fp;
    fp = open("myfifo",O_WRONLY);
    write(fp,r,99);
    close(fp);
    printf("exit kid \n");
    exit(0);
} else
{
    wait(0);
    printf("entered parent \n"); // <- this it prints
    // whats below this line apparently its not being executed
    int fz; printf("1"); 
    fz = open("myfifo",O_RDONLY); printf("2");
    printf("fd: %d",fz);
    char p[100];
    int size; …
Run Code Online (Sandbox Code Playgroud)

c fork pipe fifo

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

我怎样才能更简洁地完成这个"猫"用法?

针对真实用例的开放式问题(有创意!).基本上我想cat(1)现有文件(2)程序的输出和(3)特定的文本位.在管道,回声和重定向之间,我觉得我应该能做得比这更好!

pandoc -t latex -o mydoc.tex mydoc.rst
echo \\end{document} > footer.tex
cat header.tex mydoc.tex footer.tex > fulldoc.tex
Run Code Online (Sandbox Code Playgroud)

shell pipe cat

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

Perl - 管道命令到另一个

快问,

有没有办法通过perl将命令传递到另一个命令,就像在*Nix命令行中一样?

例如:
free -m | grep Mem

我怎么能在Perl中做"管道"?

linux perl system pipe

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

从管道读到我的孩子过程

希望是一个简单的问题.我正在尝试同时学习fork(),pipe()和waitpid()并遇到一些问题.

if (pipe(myout)<0 || pipe(myin)<0 || pipe(myerr)<0) { perror("Couldn't make pipes"); return; }
int childpid=fork();
if (childpid==0) { //child
    fdopen(myout[1], "w");
    fdopen(myin[1], "r");
    fdopen(myerr[1], "w");
    dup2(myout[1],  1);
    dup2(myin[1], 0);
    dup2(myerr[1], 2);
    printf("This should be seen\n");
    fclose(stdout); fclose(stdin); fclose(stderr);
    sleep(10);
    _exit(0);
 } else { //parent, wait on child
    printf("parent, monitoring\n");
    sim_out=fdopen(myout[0], "r");
    sim_in=fdopen(myin[0], "w");
    sim_err=fdopen(myerr[0], "r");
    printf("have my fds\n");
    int status;
    do {
        int ch;
        if (read(myout[0], &ch, 1)>0)
            write(1, &ch, 1);
        else printf("no go\n");
            waitpid(childpid, &status, WNOHANG);
    } while (!WIFEXITED(status) …
Run Code Online (Sandbox Code Playgroud)

c unix fork pipe waitpid

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

写一些随机数到管道?

我的问题是我可以写一个整数到管道?如何 ?

我需要先制作3个流程,然后生成2个数字,第二个生成数字,第三个打印结果(USING PIPE)

谢谢大家

c linux operating-system pipe

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

来自不输出到STDOUT的程序的管道输出

假设我有一个程序输出到由(必需)参数提供的文件:

./foo -o bar.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法欺骗它输出到管道?这只是输出到一个名为的文件-.

./foo -o - | less
Run Code Online (Sandbox Code Playgroud)

unix bash pipe named-pipes

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

C中的多管道bash风格

我知道有很多线程都在谈论这个问题,但我真的不明白它的实现方式.

我正在尝试创建一个可以执行linux命令的shell,因为ps | grep | less 我已经通过将每个命令及其args放在一个简单的链接列表中来进行解析.

这是我的实现不起作用.希望足够清楚.

if ((son = fork()) < 0)
  return printerr_sys("Unable to fork", 0);
if (son == 0)
  {
    if (first > 1 && data->format[first - 1] &&
    is_directing_elt(data->format[first - 1]) == DIRECT_TPIPE)
       dup2(tube_p[0], STDIN_FILENO);
       first = make_argv(data, first, &argv);
    if (next)
     {
      dup2(tube_v[1], STDOUT_FILENO);
      close(tube_v[0]);
     }
    if (execvp(argv[0], argv) < 0)
      return printerr_cmd(argv[0], 1);
  }
else
  {
    if (next)
        {
           close(tube_v[1]);
           cmdline_executer(data, next, tube_v);
        }
    waitpid(son, &(data->lastcmd), WUNTRACED);
    data->lastcmd = WEXITSTATUS(data->lastcmd); …
Run Code Online (Sandbox Code Playgroud)

c unix shell pipe

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

如何从Windows中的多个管道读取同一个线程

在我的程序中,我有几个连接到stdout和stderr子进程流的管道(即在主进程中我正在从这些流中读取).但是,如果没有任何东西可以从其中一个中读取,我的程序就会挂起.有没有办法解决这个问题不使用线程.此外,如果在xmsecs 期间没有任何内容可读,我希望所有子进程都被杀死.

在unix中,select()+ non_blocking read解决了这两个问题.但是窗户怎么样?

c c++ winapi pipe

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

标签 统计

pipe ×10

c ×5

unix ×3

bash ×2

fork ×2

linux ×2

shell ×2

c++ ×1

cat ×1

executable ×1

fifo ×1

grep ×1

haskell ×1

java ×1

named-pipes ×1

operating-system ×1

perl ×1

popen ×1

subprocess ×1

system ×1

waitpid ×1

winapi ×1