好的,这是问题所在.我有一个第三方c#lib,我正在编写一个关于它的工具.因此,我想从另一个应用程序监控一些静态容器,但当然我无法在我的应用程序域中访问它们.一个简单的例子是:
namespace DefinedInAsembly1
{
public class Resource
{
public static IList<DateTime> DateTimes {get;set;}
}
}
Run Code Online (Sandbox Code Playgroud)
namespace DefinedInAssembly2
{
class RunningProgram
{
static void Main(string[] args)
{
while(true)
{
Resource.DateTimes.Add(DateTime.Now);
Thread.Sleep(10000);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
namespace DefinedInAssembly3
{
class ToolProgram
{
static void Main(string[] args)
{
//Accessing Resource.DateTimes with the values inserted from RunningProgram
//Any ideas?
}
}
}
Run Code Online (Sandbox Code Playgroud) 可以请一些人告诉我如何通过部分姓名杀死进程?示例:我想要杀死"资源管理器",但是在代码中我想通过"explor"来植入它来杀死它,其余的应该通过代码查找.这是迄今为止的代码:
Process[] localByName = Process.GetProcessesByName("explorer");
foreach (Process p in localByName)
{
p.Kill();
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我的程序有事件onClosing- 只是隐藏它.但我还需要实现程序的关闭 - 尝试使用任务栏通知项的上下文菜单.
码:
private void FormMainForm_FormClosing(object sender, FormClosingEventArgs e)
{
//canceling closing form
e.Cancel = true;
//hide form
this.WindowState = FormWindowState.Minimized;
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
//hide icon from tray
notifyIcon.Visible = false;
//get current process
Process proc = Process.GetCurrentProcess();
//kill it and close programm
proc.Kill();
}
Run Code Online (Sandbox Code Playgroud)
但也读了一下,kill()终止所有工作并"杀死"进程,认为关闭程序可能不正常 - 某些数据可能被破坏或未被存储
还尝试使用proc.closeMainWindow();和proc.Close()-但PROGRAMM没有影响-关闭所有窗口,但过程仍在运行.
问题:.kill()这是关闭程序的正确方法,还是另一种方法呢?
如果我有一个C++程序期望在运行时期间从控制台输入cin,我该如何从shell脚本自动化这个输入?我还需要将其输出存储在一个文件中,但这部分很容易.我已经研究了不同的方法,包括将它回显到/ proc中pid的文件描述符,但似乎没有任何效果.
这是我到目前为止:
#!/bin/sh
g++ -o runme source.cpp
echo <<EOT | ./runme > output
expected program input
more expected program input
even more
EOT
Run Code Online (Sandbox Code Playgroud)
请注意,每行输入都需要在程序中通过cin读取"输入按键",我假设应该发生这种情况,因为脚本中的程序输入由新行分隔.在这里,程序被执行但是在文件中产生相同的输出,无论我在EOT之前放置什么,所以它没有像预期的那样被输入到程序的cin中.
我是java的新手,我在Java Swing中使用这个多线程应用程序.
我需要创建一个自定义类,它可以生成多个线程并同时执行这些线程.
使用Process生成线程是个好主意吗?
由于无法从ProcessBuilder类扩展,是否有任何其他方法可以将该过程实现为类?
请分享你的想法.
谢谢.
如果有人知道我对管道的帮助表示怀疑,
一个管道可以同时由多个进程共享,从而允许这些进程彼此交换“消息”。当同一管道有多个读取进程时,是否都可以读取同一条消息(仅发送一次而不是多个副本)?
在多线程环境中,写入管道时,进程发送的消息是否可能已损坏?
感谢收听
我一直在阅读线程和进程的功能.进程和线程之间的一个主要区别是,线程与创建它的进程共享资源,而进程将拥有自己的一组资源.我想测试这个,所以我打开了我的任务管理器并打开了MS Word,在任务管理器中,有一个名为WINWORD.EXE的新进程已加载,我再次打开另一个MS Word(保持上一个打开)但任务Manager只显示一个运行的WINWORD.EXE进程.我只是不明白,因为需要将两个MS字视为两个独立的过程(因为它们不共享资源).
我有一个文件MyUtilities.exe.
当我跑:
Process.Start("MyUtilities.exe","SomeParameter");
如果在没有管理员权限的情况下运行,则该进程的退出代码为0(OK).如果我以管理员身份运行该代码,退出代码为1!
由于我没有创建MyUtilities.exe我无法修改它.
最后我需要以Process.Start("MyUtilities.exe","SomeParameter");管理员身份运行并让它返回退出代码= 0.我设法做到这一点的方法是将其兼容性更改为:

(右键单击文件 - >属性 - >兼容性 - >以管理员身份运行此程序)
在更改之后,我现在能够以Process.Start("MyUtilities.exe","SomeParameter");管理员身份运行并返回退出代码0.
所以我的问题是如何更改该文件与代码的兼容性,这样我就不必告诉用户右键单击该文件然后更改设置.
我希望您在Linux中执行命令并获取已启动进程的进程ID,并将其传递给另一个命令。
我$!在bash中尝试了该变量,如果进程像这样直接启动,它将起作用:
ls &
echo $!
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样使用exec:
exec ls &
echo $!
Run Code Online (Sandbox Code Playgroud)
该$!变量将为空白。
我必须使用exec。有什么线索可以解决这个问题吗?
谢谢。
我正在通过Process对象执行另一个java程序.
这需要一些时间来完成.与此同时,父程序是否会继续运行还是暂停,以等待子进程停止?
我知道两个线程可以并行运行,是否可以使用一个线程来执行另一个程序?
如果您需要更多细节,请告诉我,如果这太过抽象.