#include <pty.h>
#include <unistd.h>
#include <thread>
#include <future>
#include <iostream>
#include <string>
ssize_t sz = 1;
int main()
{
int mfd;
pid_t pid_fork = forkpty(&mfd, NULL, NULL, NULL);
if (!pid_fork) {
// Дочерний процесс
execl("/bin/sh", "-", NULL);
} else {
// Родительский процесс
char buf[1024];
// Async
auto future = std::async(std::launch::async, [mfd]() {
std::string line;
while (sz) {
std::getline(std::cin, line);
line = line + "\n";
write(mfd, line.c_str(), line.size()); // Нужно направить в дочерний процесс как stdin
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
});
while (sz = read(mfd, buf, sizeof(buf))) {
write(STDOUT_FILENO, buf, sz); // Вывод из дочернего процесса stdout
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
exit(0);
}
}
...
#include <sys/ioctl.h>
...
struct winsize ws, *pws = NULL;
if (ioctl(1, TIOCGWINSZ, &ws) >= 0)
pws = &ws;
pid_t pid_fork = forkpty(&mfd, NULL, NULL, pws);
как быть? Какой размер массива объявить?
напрашивается вопрос "Будет ли конструктор базового класса A вызываться два раза, ведь в конструкторе C тоже вызывается конструктор A?".
A mem-initializer where the mem-initializer-id denotes a virtual base class is ignored during execution of a constructor of any class that is not the most derived class.
LONG error = RegCreateKeyEx(...); if (hKey) {
Ошибок нет, но и результатов нет !
This flag must be combined using the OR operator with the other flags in this table that either query or access registry values.
KEY_WOW64_32KEY | KEY_SET_VALUE
. RegSetValueA(hKey, "test", REG_SZ, (LPCSTR)path.c_str(), sizeof(path.c_str()));
struct Data { short id; double val; };
я понимаю что 32 00 11 49 - это интовское значение
Как в данном выводе понять где выравнивание происходит?
Я подумал, что граф всегда можно разбить на две множества так, чтобы вершины, соединенные максимальным ребром были в одном множестве, а остальные вершины в другом, то-есть ответом всегда будет максимальное ребро. Я протестировал свое решение в яндекс.контест и получил ошибку на 8 тесте. Подскажите пожалуйста, что я не правильно понял из условия?
Может есть контрпример?
4 4
0 1 2
1 2 1
2 3 0
3 0 1
к сожалению, я не силен и был бы благодарен за помощь.
char * suit [4] = { "Hearts", "Diamonds", "Clubs", "Spades" };
Как изменить строку, инициализированную при объявлении массива символьных указателей, с помощью scanf?
Как добавить программу на Си в автозагрузку Windows?
И еще: как искать информацию на ответы по Си, если я пишу в гугле "Си как добавить программу в автозагрузку", но везде появляется только С++? Нереально найти ответ.
В сети не нашёл ответа.
Получается, что, если явно скобками не обозначить, то ассоциативность всегда будет справа налево, или я не прав?
#include <string>
#include <iostream>
struct A
{
std::string name;
A(const std::string& _name): name(_name)
{
}
A operator +(const A& other) const
{
std::cerr << name << " + " << other.name << std::endl;
return A(std::string("{temporary from ") + name + " + " + other.name + "}");
}
};
int main()
{
A first("first"), second("second"), third("third");
A r = first + second + third;
}
first + second
{temporary from first + second} + third
Почему результат вывода именно такой?
After a successful return from one of these system calls, the old
and new file descriptors may be used interchangeably. They refer
to the same open file description (see open(2)) and thus share file
offset and file status flags; for example, if the file offset is modified
by using lseek(2) on one of the descriptors, the offset is also
changed for the other.