首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ubuntu中使用c#写入子进程stdin?

在Ubuntu中使用C#写入子进程的stdin,可以通过使用Process类来实现。下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // 创建一个新的进程
        Process process = new Process();

        // 设置进程启动信息
        process.StartInfo.FileName = "your_executable_file"; // 替换为你的可执行文件路径
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;

        // 启动进程
        process.Start();

        // 获取标准输入流
        StreamWriter streamWriter = process.StandardInput;

        // 写入数据到子进程的stdin
        streamWriter.WriteLine("Your input data"); // 替换为你要写入的数据

        // 关闭标准输入流
        streamWriter.Close();

        // 等待子进程退出
        process.WaitForExit();
    }
}

这段代码使用Process类来创建一个新的进程,并设置进程启动信息。其中,FileName需要替换为你的可执行文件路径。通过设置RedirectStandardInput为true,可以重定向标准输入流。然后,通过获取标准输入流的StreamWriter对象,可以将数据写入到子进程的stdin中。最后,等待子进程退出。

这种方法适用于在Ubuntu中使用C#编写的程序与其他可执行文件进行交互,可以将输入数据写入到子进程的stdin中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微软为.NET程序员带来了最优的跨平台开发体验-WSL

前言 在前几个Visual Studio Code更新中发现有一个重要得特性,就是nodejs可以使用VS Code在WSL中进行Debug了(WSL是指Win10的Linux子系统),之前写过一篇文章是使用...Debug,此时的想法就是如果可以在WSL中直接对程序进行调试的话,那么对于开发人员这项功能将是在Windows中最好连接Linux环境的开发环境了,而且由于Windows子系统的“原理”,所有子系统进程将与系统进程运行在物理主机上...更新到最新的创新者版本(版本号为:1709) 在WSL安装.NET CORE SDK (2.0.2) 最新版本的VS Code和C#扩展 (Microsoft C# extension) 之所以要更新...之前的版本为14.04,要想使用新的特性,我们要将Ubuntu子系统升级到16.04版本。...秕的版本还会是14.04,所以需要重新安装一下Ubuntu子系统,命令如下: lxrun /uninstall /full lxrun /install 如果你已经是最新版本的创新者的Windows,

90740

核心编程笔记(14.P

在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件 在特定执行场景包括: 在当前脚本继续运行 创建和管理进程 执行外部命令或程序...我们调用了unix程序uname来给我们提供系统相关信息,如果我们要吧字符串读入变量并执行内部操作或把它存储到日志文件,我们可以使用popen() >>> import os >>> f = os.popen...,都返回 if ret == 0# 进程返回的PID是0  child_suite# 进程的代码 else:# 父进程返回时进程的PID  parent_suite# 父进程的代码 ret =...os.fork() if ret == 0: #进程代码  execvp('xbill', ['xbill']) else:# 父进程代码  os.wait() 14.5.4 os.spawn...从新创建的运行程序读取(stdout和stder),或者向该程序写(stdin) commends.getoutput()在进程执行文件,以祖父串返回所有的输出 subprocess.call*()

63410

WindowsAPI 之 CreatePipe、CreateProcess

同理,要重定向stdin的话,生成一个管道, 管道的写入端由主程序写,进程从管道的读出端读数据。...匿名管道主要用于本地父进程进程之间的通信,在父进程的话,首先是要创建一个匿名管道,在创建匿名管道成功后,可以获取到对这个匿名管道的读写句柄,然后父进程就可以向这个匿名管道写入数据和读取数据了,但是如果要实现的是父子进程通信的话...,那么还必须在父进程创建一个进程,同时,这个子进程必须能够继承和使用进程的一些公开的句柄,因为在进程必须要使用进程创建的匿名管道的读写句柄,通过这个匿名管道才能实现父子进程的通信,所以必须继承父进程的公开句柄...同时在创建进程的时候,必须将进程的标准输入句柄设置为父进程创建匿名管道时得到的读管道句柄,将进程的标准输出句柄设置为父进程创建匿名管道时得到的写管道句柄。然后在进程就可以读写匿名管道了。...管道缓冲已满而数据还没有写 完,WriteFile()将要等到另一进程对管道数据读取以释放出更多可用空间后才能够返回。

3.9K10

Docker实现原理学习笔记

把宿主机的根目录挂载在了docker的/UzJu/目录 docker run -it -v /:/uzju/ ubuntu:18.04 添加描述 那么此时,我们进入到docker使用chroot...(4)数据的读出和写入:一个进程向管道写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。...添加描述 我们在宿主机可以看到很多的进程,但是我们现在启动一个docker看看 添加描述 当前的Docker 容器成功将容器内的进程与宿主机器进程隔离,此时我们回到宿主机,使用ps -ef |...Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(CPU、内存、磁盘输入输出等)。...典型的子系统介绍如下: cpu 子系统,主要限制进程的 cpu 使用率。 cpuacct 子系统,可以统计 cgroups 进程的 cpu 使用报告。

38520

守护进程「建议收藏」

示例程序 函数使用 练习 终端 在UNIX系统, 用户通过终端登录系统后得到一个Shell进程, 这个终端成为Shell进程的控制终端(Controlling Terminal), 进程, 控制终端是保存在...BSD于1980年前后向Unix增加的一个新特性. 代表一个或多个进程的集合. 每个进程都属于一个进程组. 在waitpid函数和kill函数的参数中都曾使用到....所以, 组长进程标识: 其进程组ID其进程ID 可以使用kill -SIGKILL -进程组ID(负的)来将整个进程组内的进程全部杀死 组长进程可以创建一个进程组, 创建该进程进程, 然后终止....通常可用来加入一个现有的进程组或创建一个新进程组 注意: (1)改变子进程为新的组, 应fork后, exec前。 (2)权级问题....) 该进程成为一个新进程组的组长进程 需有root权限(ubuntu不需要) 新会话丢弃原有的控制终端, 该会话没有控制终端 该调用进程是组长进程, 则出错返回 建立新会话时, 先调用fork, 父进程终止

57340

Linux文件IO操作

p 管道文件,这种文件类型用于进程间的通信 怎么判断文件类型?...- count:写入数据的大小 返回值: - 成功:实际写入的字节数 - 失败:返回-1,并设置errno 同样简单应用一下,Demo如下 #include #include <unistd.h.../main readLen:4,data:text $ cat test.txt text 对比fwrite等标准的C库函数,write是没有缓冲的,不需要fflush或者close将缓冲数据写入到磁盘.../main file len:4 linux下的标准输入/输出/错误 在文件IO操作里面一直讲到文件描述符,那我就不得不提一下linux的标准输入/输出/错误 在C语言的学习过程我们经常看到的stdin...:注意read不可以和stdin搭配使用 标准输出(standard out) 在c语言中表现为调用printf函数将内容输出到终端上。

2.7K30

使用 Go 和 Linux Kernel 技术探究容器化原理

为什么打了双引号,是因为在这个 bash 进程,我们可以随意使用操作系统的资源,并没有做资源隔离。...syscall.Sethostname 这一行到底是哪个进程在执行?main 进程还是 main 进程创建的进程? 不用想,进程都还没 Run 起来呢!...将 PID 写入一个 cgroup 的 tasks 文件,可将此进程移至该 cgroup cgroup.procs cgroup 运行的线程群组列表( TGID )。...首先 FROM 语句从 ubuntu:18.04 镜像创建一个层 【1】,而 LABEL 命令仅修改镜像的元数据,不会生成新镜像层,接着 COPY 命令会把当前目录的文件添加到镜像的 /app 目录下...第一个 RUN 命令使用 make 构建应用程序,并将结果写入新层【3】。第二个 RUN 命令删除缓存目录,并将结果写入新层【4】。

1.6K20

python 标准类库-并行执行之subprocess-进程管理

1.使用subprocess模块 以下函数是调用进程的推荐方法,所有使用场景它们都能处理。...subprocess.STDOUT 可用于Popen函数stdin,stdout或者stderr参数的指特定值,表示标准错误信息必须一起写入同样的句柄,比如标准输出。...函数返回一个元组(stdoutdata, stderrdata) 注意,如果想发送数据到进程管道,必须在创建Popen对象时使用stdin=PIPE,类似的如果想从结果元组获取非None值数据,创建...Popen.stdin 如果stdin参数为PIPE,该属性为给进程提供输入的文件对象, 否则为None....Popen.stderr 如果stdin参数为PIPE,该属性为给进程提供错误输出的文件对象,否则为None. Popen.pid 进程的ID。

4K20

Ruby执行shell命令的六种方法

在Ruby,执行shell命令是一件不奇怪的事情,Ruby提供了大概6种方法供开发者进行实现。这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。...反引号(`) 使用反引号是shell中常用的获取命令输出内容的方法,在ruby也是可以,而且一点都需要做改变。使用反引号执行命令也会将命令在另一个进程执行。...IO#popen IO#popen也是一种执行命令的方法,其命令也是在另外的进程执行。使用popen你可以像操作IO对象一样处理标准输入和输出。...: stack empty\n" 但是,在ruby 1.8.5popen3有一个缺陷,进程的退出状态没有写入到$?...popen4还可以返回一个进程ID。你也可以通过Process::waitpid2 加上对应的进程ID获得进程退出状态。但是前提是要安装open4的gem。

3.1K20

Swoole的多进程模块

提供了基于unixsock的进程间通信,使用很简单只需调用write/read或者push/pop即可 2.swoole_process支持重定向标准输入和输出,在进程内echo不会打印屏幕,而是写入管道...$redirect_stdin_stdout,重定向进程的标准输入和输出。启用此选项后,在进程内输出内容将不是打印屏幕,而是写入到主进程管道。读取键盘输入将变为从管道读取数据。默认为阻塞读取。...同步 vs 异步: 默认为同步阻塞模式, 可以使用 swoole_event_add() 添加管道到 swoole 的 event loop , 实现异步IO ?...,就会随之创建一个管道,主进程想和哪一个进程通信,就向那个进程的管道写入/读取数据。...->push('hello 进程');#推送到进程,不能当做管道使用 // echo '主进程消息:' .

77130

Swoole的多进程模块

提供了基于unixsock的进程间通信,使用很简单只需调用write/read或者push/pop即可 2.swoole_process支持重定向标准输入和输出,在进程内echo不会打印屏幕,而是写入管道...$redirect_stdin_stdout,重定向进程的标准输入和输出。启用此选项后,在进程内输出内容将不是打印屏幕,而是写入到主进程管道。读取键盘输入将变为从管道读取数据。默认为阻塞读取。...同步 vs 异步: 默认为同步阻塞模式, 可以使用 swoole_event_add() 添加管道到 swoole 的 event loop , 实现异步IO 管道通信是swoole_process...,就会随之创建一个管道,主进程想和哪一个进程通信,就向那个进程的管道写入/读取数据。...->push('hello 进程');#推送到进程,不能当做管道使用 // echo '主进程消息:' .

1.1K20

Linux进程

进程可以创建其他进程,被创建的进程称为进程,创建它们的进程称为父进程。这种关系形成了一个进程树。 1. 进程的类型 在Linux操作系统进程是系统进行资源分配和调度的基本单位。...fork()用于创建一个新进程,exec()用于在进程执行一个新程序,wait()使父进程等待进程的结束,exit()用于结束进程执行。 4....以下是一些常见的进程间通信方法及其在Go的实现方式: 4.1 使用管道(Pipes) 虽然Go标准库没有直接提供创建匿名管道的API,但你可以通过启动进程时,使用os/exec包来实现父子进程间的管道通信...语言中,实现进程间通信(IPC)通过共享内存的方式并不像在一些底层语言(C或C++)那样直接,因为Go的标准库没有直接提供共享内存的API。...4.4 使用消息队列、信号量和共享内存 对于需要使用系统级IPC机制(POSIX消息队列、信号量或共享内存)的场景,Go标准库没有直接支持。

5510

Python用subprocess的Popen来调用系统命令

參数startupinfo与createionflags仅仅在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置进程的一些属性,:主窗体的外观,进程的优先级等等...Popen.communicate(input=None) 与进程进行交互。向stdin发送数据,或从stdout和stderr读取数据。可选參数input指定发送到进程的參数。...Popen.kill() 杀死进程。 Popen.stdin 假设在创建Popen对象是,參数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策进程发送指令。...该函数将一直等待到进程执行结束,并返回进程的returncode。文章一開始的样例就演示了call函数。假设进程不须要进行交 互,就能够使用该函数来创建。...在异常对象,包 括进程的returncode信息。 subprocess模块的内容就这么多。在Python手冊,还介绍了怎样使用 subprocess来替换一些老的模块,老的函数的样例。

1.7K20

php如何编写守护进程

(0)文件创建屏蔽字,也就是文件的特殊权限设置(PHP手册) 将进程设置为会话首进程,也就是开启两个进程,父进程退出,进程设置setsid(什么是会话?...如何编写) 将文件的目录设置为根目录 关闭文件的标准输入、标准输出、标准错误[0,1,2],也就是当程序开启守护进程后,不在接收控制终端的控制影响:按Ctrl+C退出程序等等 编写程序 //第一步 umask...); fclose(STDOUT); fclose(STDERR); // 这里用dev/null来代替标准输入,标准输出,标准错误,dev/null 表示空设备文件或黑洞文件,所有写入其中的数据...执行命令ps -aux 查看进行,发现该进程下并没有控制终端,并且在睡眠状态下 以上则是简单的守护进程编写,当然也可以再以上的基础上进阶,比如开启守护进程后,创建多进程进程监听请求并写文件或者写日志...,进程接收到信号退出后,父进程清理进程并退出等等 本文为北溟有鱼QAQ原创文章,转载无需和我联系,但请注明来自北溟有鱼QAQ https://www.umdzz.cn

1.1K10

python执行DOS命令的3种方法小

参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置进程的一些属性,:主窗口的外观,进程的优先级等等。...subprocess.PIPE 在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数,表示与进程通信的标准流。...Popen.communicate(input=None) 与进程进行交互。向stdin发送数据,或从stdout和stderr读取数据。可选参数input指定发送到进程的参数。...同样, 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。 Popen.send_signal(signal)  向进程发送信号。...Popen.kill() 杀死进程。 Popen.stdin  如果在创建Popen对象是,参数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策进程发送指令。

2.1K20
领券