Форум программистов, компьютерный форум CyberForum.ru

Как определить, из какого режима запущена программа? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрица методом крамера и алгоритм http://www.cyberforum.ru/cpp-beginners/thread56715.html
Помогите если не сложно; 1. Решить систему уравнений методом Крамера. x1 + x2 + 2x3 +3x4 = 1 3x1 - x2 - x3 - 2x4 = -4 2x1 + 3x2 - x3 - x4 = -6 x1 + 2x2 + 3x3 - x4 = 1 2. Разработать алгоритм и программу обеспечивающую представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы. Программа должна...
C++ Массив, его значение, его квадрат и т.д. Помогите написать такую программу на С++. <<Вывести на экран номер элемента одномерного массива, его значение, его квадрат, адрес ячейки памяти с использованием указателей. Элементы массива вводятся с клавиатуры>> http://www.cyberforum.ru/cpp-beginners/thread56714.html
Получить список хендлов дочерних окон C++ WinAPI
Скок не ковырялся,ничего путного не вышло.Есть у кого готовый вариант ? Без классов - стандартными способами(FindWindow,FindWindowEx и т.д.) Цель: сэмулировать ввод сообщения в каждое дочернее окно приложения.
Не работают cin и cout C++
Компилю на С++. Впервые. Использую Borland C++ Builder 6.0 Прочитал много разных самоучителей, энциклопедий по С++ Создаю приложение под windows Везде в книгах пишется команда cout, но она вобще не работает в компиляторе. с cin та же история В чем тут подвох-то? У меня уже нервов не хватает. Складывается впечатление что у меня эти функции просто вырезали
C++ Разработать простой двухпросмотровый ассемблер http://www.cyberforum.ru/cpp-beginners/thread56692.html
Нужно разработать простой двухпросмотровый ассемблер. Есть кое какие наброски
C++ Элементы массива циклически сдвинуть на k позиций влево Помогите пожалуйста написать программу!!!понимаю что все должно быть оч легко, но... В С++: 1. Дан массив, состоящий из символов. Элементы массива циклически сдвинуть на k позиций влево. 2. Победителем соревнований объявляется тот спортсмен, у которого максимален наилучший результат по всем броскам. Таким образом, программа должна найти значение максимального элемента в данном массиве, а также... подробнее

Показать сообщение отдельно
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
16.10.2009, 16:00     Как определить, из какого режима запущена программа?
Набросал код для вывода родительских процессов для заданного pid (linux)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
 
int m_getppid(char *stpath)
{
    FILE *fp;
    char *p, buf[256];
 
    if( (fp = fopen(stpath, "r")) == NULL) {
        perror("m_getppid: fopen:");
        exit(1);
    }
    do {
        fgets(buf, sizeof(buf), fp);
    } while(!feof(fp) && (p = strstr(buf, "PPid")) == NULL);
    fclose(fp);
 
    if(p == NULL)
        return -1;
    while(!isdigit(*p))
        p++;
    return atoi(p);
}
 
void getpidname(char *s, int pid)
{
    FILE *fp;
    char cmdpath[256];  /* cmdline file */
    int c;
 
    snprintf(cmdpath, sizeof(cmdpath), "/proc/%d/cmdline", pid);
    if( (fp = fopen(cmdpath, "r")) == NULL) {
        perror("getpidname: fopen");
        exit(2);
    }
    while( (c = getc(fp)) != EOF)
        *s++ = c;
    *s = '\0';
    fclose(fp);
}
 
void proclist(int pid)
{
    int ppid;
    char ppidname[256];  
    char stpath[256];   /* status file */
 
    if(pid == 1)    /* init process */
        return;
    snprintf(stpath, sizeof(stpath), "/proc/%d/status", pid);
    ppid = m_getppid(stpath);
    getpidname(ppidname, ppid);
    printf("%d\t%s\n", ppid, ppidname);
 
    proclist(ppid);
}
 
int main(void)
{
    printf("PID\tCMD\n");
    proclist(getpid());
    return 0;
}
Получаем:
Код
PID	CMD
4482	zsh
4481	urxvt
4388	fluxbox
4382	-:0         
4309	/usr/bin/xdm
1	init [3]
-:0 - на нулевом дисплее запущены Иксы, urxvt - графический эмулятор консоли.
Остается только ввести функцию проверки искомого процесса и передать ее в proclist.
 
Текущее время: 01:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru