zoukankan      html  css  js  c++  java
  • linux进程

    一、进程 与 线程:
    1. strace命令: 跟踪进程系统调用的情况。
    strace -o output.txt -T -tt -e trace=all -p 28979
    strace -T 记录每个系统调用所花费的时间
    strace -t (或者 -tt)记录每个系统调用发生时的时间(时分秒的格式)
    strace -s 1024 显示系统调用参数时,对于字符串显示的长度, 默认是32,如果字符串参数很长,很多信息显示不出来, 则可以使用strace -s 1024
     
    strace -e trace=nanosleep 只记录相关的系统调用信息。
    -e trace=network // 只记录和网络api相关的系统调用
    -e trace=file // 只记录涉及到文件名的系统调用
    -e trace=desc // 只记录涉及到文件句柄的系统调用
    还有其他的包括process,ipc,signal等。
     
    如:使用strace命令跟踪top命令的行为。

    另外:ltrace命令可以跟踪进程调用库函数的情况。
     
     
    2. fork创建进程
     1 //forkonly.cpp:
     2 #include <sys/types.h>
     3 #include <unistd.h>
     4 #include <stdlib.h>
     5  
     6 int main()
     7 {
     8         pid_t pid;
     9         pid=fork();// pid==0表示子进程, pid>0表示父进程。
    10         return 1;
    11 }

    编译: g++ forkonly.cpp -o forkonly.exe
    查看系统调用: strace ./forkonly.exe

    发现fork会用以下方式调用clone函数:

    clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f010b406780) = 4490

    3. pthread_create创建线程

    函数声明:
    int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);


    若成功则返回0,否则返回出错编号

    第一个参数为指向线程标识符的指针。
    第二个参数用来设置线程属性。
    第三个参数是线程运行函数的起始地址。
    最后一个参数是运行函数的参数。

     1 #include <pthread.h>
     2 #include <stdlib.h>
     3 #include <iostream>
     4 
     5 void *func( void * in)
     6 {
     7 std::cout<<*(char *) in<<std::endl;
     8 }
     9 
    10 int main()
    11 {
    12 pthread_t  ntid;
    13 char c = 'x';
    14 pthread_create(&ntid, NULL, func, (void *)&c);
    15 sleep(10);  //防止主线程过早退出
    16 return 1;
    17 }

    用strace查看pthread_create调用clone函数的形式:

    clone(child_stack=0x408c3240, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x408c39d0, tls=0x408c3940, child_tidptr=0x408c39d0) = 20449

     
  • 相关阅读:
    WCF中NetTCp配置
    生产者消费者模式
    MVC 引擎优化
    Wcf
    MongoDB运用
    Sock基础
    WebService
    线程
    委托
    特性
  • 原文地址:https://www.cnblogs.com/yaozhaoyz/p/2796789.html
Copyright © 2011-2022 走看看