Вы можете использовать ниже aggregation
, используя $indexOfCP
db.users.aggregate([
{ "$lookup": {
"from": "posts",
"let": { "authorId": " Вы можете использовать ниже aggregation
, используя $indexOfCP
[110]id", "name": "$name" },
"pipeline": [
{ "$match": {
"$expr": {
"$and": [
{ "$ne": [{ "$indexOfCP": ["$text", "$name"] }, -1] },
{ "$eq": ["$author", "$authorId"] }
]
}
}}
],
"as": "post"
}}
])
Вы заглянули <curses.h>
видеть что getch()
функция делает?
Подсказка: OSX и Linux не являются тем же как Windows.
А именно, как макрос в <curses.h>
, мы находим:
#define getch() wgetch(stdscr)
Теперь, там, кажется, в Вашей системе, фактическая функция getch()
в библиотеке проклятий, но это ожидает stdscr
чтобы быть настроенным, и это сделано функциями инициализации проклятий (initscr()
и родственники), и это заметно не сделано Вашим кодом. Так, Ваш код вызывает неопределенное поведение путем вызова стандартных программ проклятий, прежде чем корректная инициализация будет сделана, ведя к катастрофическому отказу.
(Хорошая подсказка от dmckee - это помогло вытащить строку ссылки из acidzombie24, который был важен.)
Для получения до точки, где единственное нажатие клавиши может быть считано и программа, завершенная чисто необходимо сделать большую работу над Unix (OSX, Linux). Необходимо было бы захватить начальное состояние терминала, устроить atexit()
функция - или некоторый подобный механизм - для восстановления состояния терминала измените терминал от режима с обработкой в режим без предварительной обработки, затем вызовите функцию для чтения символа (возможно просто read(0, &c, 1)
), и сделайте свой выход. Могли бы быть другие способы сделать это - но это, конечно, включит некоторую установку и операции разрушения.
Одна книга, которая могла бы помочь, является Усовершенствованным Программированием Unix, 2-м Edn Mark Rochkind; это покрывает терминальную обработку на необходимом уровне. С другой стороны, можно использовать <curses.h>
правильно - который будет более простым, чем решение самокрутки и вероятно более надежным.
Вы не показали a
#include <stdio.h>
или
#include <curses.h>
или подобная строка. Вы уверены, что связываетесь против библиотеки, которая включает getch()
?