小编Suk*_*nto的帖子

Ash(由busybox提供的shell)教程

我发现busybox的ash语法与其他标准shell(sh,bash,tcsh)不同.
是否有任何关于其语法的文档或灰分教程?

shell busybox

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

更改应用程序的最大pthread数限制

是否有可能通过任何方式更改进程可以创建的pthread数量限制?目前在我的linux系统上我可以创建大约380个线程,但我希望只要内存可用就增加它.

pthreads limit

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

C GCC中的功能对齐

我正在尝试使用'aligned(16)'属性将函数字节对齐到16字节边界.我做了以下事情: void __attribute__((aligned(16))) function() { }

(来源:http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html)

但是当我编译(gcc foo.c;没有使用makefile或链接器脚本)时,我收到以下错误:

FOO.c:99:错误:可能没有为'function'指定对齐

我尝试调整到4,8,32等,但错误仍然相同.我需要这个来为基于powerpc的处理器调整中断服务程序.这样做的正确方法是什么?

c gcc alignment memory-alignment

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

在多线程(使用克隆)程序中调试分段错误

我编写了一个代码来创建一些线程,每当其中一个线程完成一个新线程就会被创建来替换它.由于我无法使用pthread创建大量线程(> 450),所以我使用了克隆系统调用.(请注意,我知道拥有如此大量线程的含义,但这个程序只是为了强调系统).
由于clone()需要将子线程的堆栈空间指定为参数,因此我为每个线程malloc所需的堆栈空间块,并在线程完成时释放它.线程完成后,我向父母发送信号通知它.
代码如下:

#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <errno.h>

#define NUM_THREADS 5

unsigned long long total_count=0;
int num_threads = NUM_THREADS;
static int thread_pids[NUM_THREADS];
static void *thread_stacks[NUM_THREADS];
int ppid;

int worker() {
 int i;
 union sigval s={0};
 for(i=0;i!=99999999;i++);
 if(sigqueue(ppid, SIGUSR1, s)!=0)
  fprintf(stderr, "ERROR sigqueue");
 fprintf(stderr, "Child [%d] done\n", getpid());
 return 0;
}

void sigint_handler(int signal) {
 char fname[35]="";
 FILE *fp;
 int ch;
 if(signal == SIGINT) {
  fprintf(stderr, "Caught SIGINT\n");
  sprintf(fname, …
Run Code Online (Sandbox Code Playgroud)

debugging multithreading clone system-calls segmentation-fault

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