所以我正在开发一个多次执行某项任务的程序.我已经使用线程编写过程序,但现在我需要使用fork()进程.
使用线程,我只需创建指定数量的线程,让它们执行一个函数(更改共享内存中的变量),然后最终执行在共享内存中使用最终值的内容.
然而,现在我想做同样的事情,但我不知道怎么做,因为每次我调用fork()它本质上都是双倍的.很明显,如果我在forloop中调用fork(),那么每个父进程和子进程将通过自己的循环调用fork().
所以我的问题简而言之:如何使用fork创建一个确切数量的子进程(假设我需要5个子进程),并让我的父进程等到这5个进程完成后再继续运行?
谢谢您的帮助!
我只是尝试使用3个命令行参数运行此程序:2个int和1个文件名.
我一直在运行我的程序:
a.out 1 2 devices.txt
Run Code Online (Sandbox Code Playgroud)
devices.txt看起来像这样:
1
Run Code Online (Sandbox Code Playgroud)
我的主要方法如下:
int main(int argc, char* argv[]){
int MaxIterations, T, numDevices;
FILE *devices;
printf("Num arguments: %d \n", argc);
if(argc < 3 || argc > 4){
printf("ERROR, need exactly 2 or 3 arguments!\n");
return 1;
} else if (argc == 3){
MaxIterations = argv[1]; // max iterations allowed
T = argv[2]; // time interval
devices = fopen("devices.in", "r");
} else {
MaxIterations = argv[1];
T = argv[1];
devices = fopen(argv[3], "r");
if(devices == NULL){ …Run Code Online (Sandbox Code Playgroud) 我正在使用JTable以图形方式显示我正在开发的应用程序的搜索结果.我希望能够在不再需要表时删除表,然后用新创建的表替换它.以下是我目前将表格添加到JFrame的方法:
userLibrary = new CustomLibrary(users, LIBRARY_WIDTH, LIBRARY_HEIGHT);
userLibrary.setOpaque(true);
userLibrary.setBounds(LIBRARY_START_X, LIBRARY_START_Y, LIBRARY_WIDTH, LIBRARY_HEIGHT);
getContentPane().add(userLibrary);
Run Code Online (Sandbox Code Playgroud)
我的自定义库(扩展了JPanel)执行以下操作:
public CustomLibrary(LinkedList<User> usernames, int width, int height) {
CustomTable table = new CustomTable(userRows,columnNames);
table.setPreferredScrollableViewportSize(new Dimension(width, height));
table.setFillsViewportHeight(true);
table.setAutoCreateRowSorter(true);
JScrollPane scrollPane = new JScrollPane(table);
// Add the scroll pane to this panel.
add(scrollPane);
}
Run Code Online (Sandbox Code Playgroud)
现在一切正常并显示我的表,但我无法弄清楚如何从我的内容窗格中完全删除表.我试过打电话
getContentPane().remove(userLibrary);
Run Code Online (Sandbox Code Playgroud)
但这似乎什么都不做.
所以我的一般问题是.一旦我已经创建并绘制了一个表,我如何从我的JFrame中完全删除它?