Аналог unistd h в windows

Обновлено: 04.07.2024

Требуется узнать родительский процесс запущеного приложения. Есть данная функция:

Я хочу чтобы он вызывал не аргумент, а готовую функцию по нахождению родительского процесса:

На выходе по идее должно быть:

Output:-
Process ID:23118
Parent Process ID:19713

По логике я пишу так

1. Правильно ли делаю?
2. Почему cannot open source file "unistd.h" это какая-то дополнительная либа??

Спасибо за Ваши ответы. Пишу на винде.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Error C1083: Cannot open source file: 'Source.cpp': No such file or directory
Помогите плз. неделю сражаюсь с VS 2013 и не могу даже запустить простейшую "hello" (((.

Потому что вы на Windows, а unistd.h - это заголовочный файл POSIX. DrOffset, есть ли элегантное решения для windows? The CreateProcess function also returns an identifier that uniquely identifies the process throughout the system. A process can use the GetCurrentProcessId function to get its own process identifier (also known as the process ID or PID). The identifier is valid from the time the process is created until the process has been terminated. A process can use the Process32First function to obtain the process identifier of its parent process.

За элегантность в вашем понимании не ручаюсь.

Т.е. нужно изучить документацию на платформу, для которой вы пишете, в отношении интересующего вас вопроса. А потом написать код.
Гуглить примеры кода без анализа документации - неправильно.

Ошибка: "Source file not compiled"
Здравствуйте, начал обучаться с++ по книге "с++ для чайников". написал первую программу, сделал все.

Ошибка компиляции "cannot open output file GO.exe: Permission denied"
Подскажите в чем ошибка? Почему не хочет компилировать? 17:30:58 **** Incremental Build of.

Ошибка при компиляции "cannot open output file 780561.exe: Permission denied"
Сделал пару правок и код перестал работать, вернул все назад и снова ничего. Ошибка: .


При сборке проекта Visual C++ (из Visual Studio 2010) ругается на отсутствие файла <unistd.h>. Если я правильно понял, этот файл описаний используется для проектов под *nix, обеспечивая доступ к POSSIX API. Для Windows такой доступ есть в GCC-MinGw. На какую библиотеку правильно заменить и что проверить/докрутить в самом проекте?


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку". "(с)

Из вопроса так и не понятно:

- как "поддержать" работу с библиотеками из-под Windows для Unix?
- или "как избавиться" от такой поддержки в "где-то взятом проекте", где "такая поддержка была включена"?
- если правильно понимаю, "во вновь созданном проекте с нуля для C++-приложения" всё нормально и никаких "левых" h-файлов нет?

. поиск показывает кучу тем:

однако непонятна сама задача.

Исправлено: MichaelD, 17.11.12 16:00

Михаил, рад приветствовать!

Есть файл на С, в include прописан вышеупомянутый файл .h. Но это сборка подразумевает, если правильно понимаю, компиляцию под *nix, а мну надо под Винду. Заменил вызов unistd.h на связку windows.h и winapi.h (со вторым наврал скорее всего, проект на работе, под рукой нет - в понедельник уточню и дам побольше информации). Но лезут ошибки другого рода. Гугл грит, что надо эмулировать вызов POSSIX никсов.. в CCG или MinGW для Винды. Да вот бяда, нет хуже того, что не знал и еще и забыл.

Как правильно/сменьшимизатратами это сделать? Думал забросить идею, а сейчас из принципа пойду до конца.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку". "(с) Речь видимо идет о портировании приложения с никсов на винду. Я б не стал заморачиваться, поставил виртуалку, воткнул линух и юзал бы нативное приложение. Полноценно портировать может быть весьма затратно sphinx
Гугл грит, что надо эмулировать вызов POSSIX никсов.. в CCG или MinGW для Винды. Да вот бяда, нет хуже того, что не знал и еще и забыл..

Лично я никогда не утомлял свою голову подобной проблемой. Однако,

MinGW compilers provide access to the functionality of the Microsoft C runtime and some language-specific runtimes. MinGW, being Minimalist, does not, and never will, attempt to provide a POSIX runtime environment for POSIX application deployment on MS-Windows. If you want POSIX application deployment on this platform, please consider Cygwin instead.

Михаил, спасибо! Ссылки в понедельник пригодятся, уверен. Я эту проблему допинаю, но буду рад помощи. Да и на карту мой профессионализм/компетенция поставлена, а кое-кому это не важно. Так же, как и способы решения проблемы. Но я НЕ предлагаю все сделать за меня, а помощь очень нужна. Правда. Ну, не силен в С++.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку". "(с)

Отказался я от прямого перевода под компилятор Visual C++, скачал MinGW, установил, компилировал так:

В итоге подхватились все библиотеки, все константы и пр., хотя и не без шаманства. Осталось победить последнюю ошибку:

invalid conversion from 'unsigned char' to 'fCss',

Может кто подскажет сущность этой ошибки? А, возможно, и путь/пути решения.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку". "(с)

unsigned char myField = fgetc(fp); <--- не проверял, но fgets() возвращает,
думаю, unsigned char, ибо стандартная функция

enum fCss fReen;

fReen = myField; <---- вот здесь ругается на несоответствие типов


Как из переменной myField получить переменную fReen?


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку". "(с)

Исправлено: sphinx, 20.11.12 17:43

The static_cast operator can explicitly convert an integral value to an enumeration type. If the value of the integral type does not fall within the range of enumeration values, the resulting enumeration value is undefined.

Исправлено: Igor Korolyov, 20.11.12 18:54

Игорь, спасибо! Завтра отпишусь, если скомпилируется.


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку". "(с)

Скомпилировалось, но не работает, надо разбираться.

static_cast добавил сразу после enum, а присвоение переменных убрал совсем. Но теперь не работает в другом месте.

Я портирую относительно простую консольную программу, написанную для Unix, на платформу Windows (Visual c/" >C++ 8.0). Все исходные файлы включают " unistd.х", которого не существует. Удаляя его, я получаю жалобы на неправильные прототипы для "srandom", "random" и "getopt". Я знаю, что могу заменить случайные функции, и я уверен, что могу найти/взломать реализацию getopt.

но я уверен, что другие столкнулись с той же проблемой. Мой вопрос: есть ли портвейн " unistd.h " к окнам? По крайней мере, один containg тех функций, которые имеют собственную реализацию Windows - мне не нужны трубы или разветвления.

редактировать:

Я знаю, что могу создать свой собственный "unistd.h", который содержит замены для вещей, которые мне нужны, особенно в этом случае, поскольку это ограниченный набор. Но поскольку это кажется общей проблемой, мне было интересно, сделал ли кто-то работу уже для большего подмножества функциональность.

переключение на другой компилятор или среду невозможно на работе - я застрял в Visual Studio.

поскольку мы не можем найти версию в Интернете, давайте начнем здесь.
Большинство портов для Windows, вероятно, требуется только подмножество полного файла Unix.
Вот отправная точка. При необходимости добавьте определения.

попробуйте включить . Кажется, это эквивалент Visual Studio unistd.h .

надеюсь, это поможет.

Я бы рекомендовал использовать по MinGW/префикса msys как среда разработки. Особенно, если вы переносите простые консольные программы. Msys реализует Unix-подобную оболочку в Windows, а mingw-порт коллекция компиляторов GNU (GCC) и другие инструменты сборки GNU для платформы Windows. Это проект с открытым исходным кодом и хорошо подходит для этой задачи. В настоящее время я использую его для создания утилит и консольных приложений для Windows XP, и у него, безусловно, есть это

я наткнулся на эту тему, пытаясь найти альтернативу Windows для getpid() (определена в unistd.h ). Оказывается, что в том числе process.h делает трюк. Возможно, это поможет людям, которые найдут эту нить в будущем.

нет, IIRC нет getopt () на Windows.

Boost, однако, имеет program_options библиотека. что работает нормально. Сначала это покажется излишним, но это не страшно, особенно учитывая, что он может обрабатывать параметры настройки программы в файлах конфигурации и переменных среды в дополнение к параметрам командной строки.

создайте свой собственный unistd.H заголовок и включить необходимые заголовки для прототипов функций.

Потдскажите какие строчки поменять\добавить?
вот на эту

вот так ругается

тут кое-что поменял

но вот так ругается на последние 3 строчки.

тут несоответствие параметров

_________
Заранее благодарен!

Здравствуйте, Аноним, Вы писали:

такого файла в windows нет
а что там такое?

>тут кое-что поменял

с этим надо разбираться отдельно но по всей видимости это обычные трейсы
для начала заменить на обычный printf или OutputDebugString

Здравствуйте, Аноним, Вы писали:

А>Потдскажите какие строчки поменять\добавить?

Потому что это в Posix системах такая вещь: unistd.h

Дальше и смотреть особо не стал. Если программа активно работает с системой, а не только через стандартные функции C/C++ вам надо понимать, что она делает в linux и как можно перенести в windows. Механический подход, скорее всего, не прокатит. Некоторые posix-вещи не имеют прямых аналогов в windows, самая известная — fork() и требуют переписывания.

Могу ещё сказать, что если вы пытаетесь перенести какую-то более-менее известную OpenSource-программу, есть смысл поискать получше, скорее всего уже кто-то её портировал

Здравствуйте, Аноним, Вы писали:

А>Потдскажите какие строчки поменять\добавить?
А>вот на эту
.

Если надо быстро пользуй cygwin.

ecли проект не ширпотребный, то можешь попробовать interix (Subsystem For UNIX Applications), там POSIX с forkом и все твои headerы есть.

Необходим для работы с разделяемыми динамически-загружаемыми библиотеками.

Скорее всего, вам достаточно уже подключенных windows.h и winsock2.h. Как вам уже посоветовали, комментируете отсутствующие в Win32-среде *.h , а далее смотрите на какие отсутствующие декларации функций ругается компилятор. Лезете в документацию по Linux/Posix, читаете что они делают и пытаетесь припомнить аналог в Win32.

У меня такое впечатление, что вы хотите как-то по-быстрому запихать linux-программу в Windows. Весьма вероятно, ничего хорошего не выйдет, программирование для linux и для windows имеют достаточно много отличий, чтобы потребовалось переписать около 20%-30% слоя кода, тесно завязанного на систему.

Могу присоединиться к совету использовать Cygwin или MinGW, если вам требуется быстро скомпилировать и заставить работать в Windows линуксовый код.

Cygwin — добавляет в Windows библиотеки и окружение, реализующие posix-вызовы, создавая Unix внутри Windows. Часто самый простой способ заставить работать linux-программу в Windows, часто достаточно её просто скомпилировать в Cygwin. Но для работы, очень возможно, будет необходим установленный Cygwin, хотя может оказаться достаточно некоторых dll от него.

MinGW + MSys — порт компилятора gcc и shell-окружения в Windows. В отличие от Cygwin, откомпилированные в MinGW + MSys программы работают с windows-окружением и не требуют MSys для своей работы. Возможно, потребуется некоторая доработка.

там остальные тоже есть, см. /usr/include и ищите по именам файлов в %WINDIR%\SUA.

Файл unistd.h использует расширение H, в частности известное как файл C/C++/Objective-C Header. Классифицируется как файл Разработчик (C/C++/Objective-C Header), созданный для C-Free 5.0 Pro компанией Program Arts.

Файл unistd.h впервые был создан 04/27/2015 для ОС Windows 10 в Orwell Dev-C++ 5.11. 01/04/2010 вышла версия 5.0 Pro для C-Free 5.0 Pro.

В этой статье приведены подробные сведения о unistd.h, руководство по устранению неполадок с файлом H и список версий, доступных для бесплатной загрузки.




Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Программа: C-Free 5.0 Pro
Разработчик: Program Arts
Программное обеспечение: C-Free
Версия ПО: 5.0 Pro
Сведения о файле
Размер файла (байты): 719
Дата первоначального файла: 11/22/2019
Дата последнего файла: 12/31/2019
Информация о файле Описание
Размер файла: 719 bytes
Дата и время изменения файла: 2019:12:31 10:41:15+00:00

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Общие ошибки выполнения unistd.h

Ошибки файла unistd.h часто возникают на этапе запуска C-Free, но также могут возникать во время работы программы. Эти типы ошибок H также известны как «ошибки выполнения», поскольку они возникают во время выполнения C-Free. К числу наиболее распространенных ошибок выполнения unistd.h относятся:

  • Не удается найти unistd.h.
  • unistd.h — ошибка.
  • Не удалось загрузить unistd.h.
  • Ошибка при загрузке unistd.h.
  • Не удалось зарегистрировать unistd.h / Не удается зарегистрировать unistd.h.
  • Ошибка выполнения — unistd.h.
  • Файл unistd.h отсутствует или поврежден.

Программа: C:\Program Files (x86)\C-Free 5\mingw\include\unistd.h

Среда выполнения получила запрос от этого приложения, чтобы прекратить его необычным способом.
Для получения дополнительной информации обратитесь в службу поддержки приложения.

В большинстве случаев причинами ошибок в H являются отсутствующие или поврежденные файлы. Файл unistd.h может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с C-Free) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла unistd.h может быть вызвано отключением питания при загрузке C-Free, сбоем системы при загрузке или сохранении unistd.h, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.

Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку unistd.h, перейдите к шагу 2 ниже.


Шаг 2. Если вы недавно установили приложение C-Free (или схожее программное обеспечение), удалите его, затем попробуйте переустановить C-Free.

Чтобы удалить программное обеспечение C-Free, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить C-Free.

Если на этапе 2 также не удается устранить ошибку unistd.h, перейдите к шагу 3 ниже.


Шаг 3. Выполните обновление Windows.


Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла unistd.h. Мы храним полную базу данных файлов unistd.h со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии C-Free . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:\Program Files\MATLAB\R2019b\polyspace\verifier\cxx\include\include-libc\bits\
Windows 10: C:\Program Files\MATLAB\R2019b\polyspace\verifier\cxx\include\include-libc\sys\
Windows 10: C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\ssp\
Windows 10: C:\Program Files\MATLAB\R2019b\polyspace\verifier\cxx\include\include-libc\
Windows 10: C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\sys\
Показать на 4 каталогов больше + Windows 10: C:\Program Files (x86)\C-Free 5\mingw\include\sys\
Windows 10: C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\
Windows 10: C:\Program Files (x86)\C-Free 5\mingw\include\
Windows 10: C:\Program Files\MATLAB\R2019b\polyspace\verifier\cxx\include\include-libc\asm\

Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.

Читайте также: